New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

smooth-scrollbar

Package Overview
Dependencies
Maintainers
1
Versions
147
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

smooth-scrollbar

Customize scrollbar in modern browsers with smooth scrolling experience.

  • 4.2.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
38K
decreased by-2.23%
Maintainers
1
Weekly downloads
 
Created
Source

smooth-scrollbar

npm npm devDependency Status npm Travis

Customize scrollbar in modern browsers with smooth scrolling experience.

Browser Compatibility

BrowserVersion
IE10+
Chrome22+
Firefox16+
Safari8+
Android Browser4+
Chrome for Android32+
iOS Safari7+

Install

Via npm:

npm install smooth-scrollbar --save

Via bower:

bower install smooth-scrollbar --save

Demo

http://idiotwu.github.io/smooth-scrollbar/

Why is native scrolling slow?

As is explained in this article, browser repaint every frame in scrolling. Less painting is better.

To avoid repainting, I use translate3d in scroll content to create composite layers and force hardware accelerating.

Usage

Smooth scrollbar is defined as an UMD module which named Scrollbar, you can use any loader to load it:

import Scrollbar from 'smooth-scrollbar';

Or get it from window object:

const { Scrollbar } = window;

Don't forget to include the stylesheet in your page:

<link rel="stylesheet" href="dist/smooth-scrollbar.css">

Here're three ways to tell the plugin which element should be a smooth scrollbar:

  1. As an element:

    <scrollbar>
        ...
    </scrollbar>
    
  2. As an attribute:

    <section scrollbar>
        ...
    </section>
    
  3. As a data attribute

    <section data-scrollbar>
        ...
    </section>
    

Then init all scrollbars:

Scrollbar.initAll(options);

Or you can call Scrollbar.init(elem, options) to manually init the scrollbar.

Available Options for Scrollbar

parametertypedefaultdescription
speedNumber1Scrolling speed scale.
frictonNumber10Scrolling fricton, a percentage value within (1, 100)
ignoreEventsArray[ RegExp ]A list of events names that are ignored, all handled events are: ["blur", "click", "dragend", "dragover", "dragstart", "focus", "keydown", "mousedown", "mousemove", "mouseup", "resize", "scroll", "selectstart", "touchend", "touchmove", "touchstart", "wheel"]

Confusing with the option field? Try edit tool here!

DOM Structure

Following is the DOM structure that Scrollbar generated:

<scrollbar>
    <article class="scroll-content">
        your contents here...
    </article>
    <aside class="scrollbar-track scrollbar-track-x">
        <div class="scrollbar-thumb scrollbar-thumb-x"></div>
    </aside>
    <aside class="scrollbar-track scrollbar-track-y">
        <div class="scrollbar-thumb scrollbar-thumb-y"></div>
    </aside>
</scrollbar>

APIs

Scrollbar

Instance

Properties
Methods

Work with RubaXa/Sortable

Details here.

Todo

  • Overscroll effect.

Changelog

4.2.0

  • Add ignoreEvents support.

4.1.0

  • Reduce movement at container's edge.

4.0.0

  • Movement based scrolling algorithm.
  • Reduce options, simple is better :)

3.1.0

  • Use quadratic curve to perform scrollTo method.

3.0.0

  • New easing algorithm.
  • Dependency free!

License

MIT.

Keywords

FAQs

Package last updated on 06 Apr 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc